home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / nfsd / xdr.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  4.0 KB  |  178 lines

  1. /*
  2.  * linux/include/linux/nfsd/xdr.h
  3.  *
  4.  * XDR types for nfsd. This is mainly a typing exercise.
  5.  */
  6.  
  7. #ifndef LINUX_NFSD_H
  8. #define LINUX_NFSD_H
  9.  
  10. #include <linux/fs.h>
  11. #include <linux/vfs.h>
  12. #include <linux/nfs.h>
  13.  
  14. struct nfsd_fhandle {
  15.     struct svc_fh        fh;
  16. };
  17.  
  18. struct nfsd_sattrargs {
  19.     struct svc_fh        fh;
  20.     struct iattr        attrs;
  21. };
  22.  
  23. struct nfsd_diropargs {
  24.     struct svc_fh        fh;
  25.     char *            name;
  26.     unsigned int        len;
  27. };
  28.  
  29. struct nfsd_readargs {
  30.     struct svc_fh        fh;
  31.     __u32            offset;
  32.     __u32            count;
  33.     int            vlen;
  34. };
  35.  
  36. struct nfsd_writeargs {
  37.     svc_fh            fh;
  38.     __u32            offset;
  39.     int            len;
  40.     int            vlen;
  41. };
  42.  
  43. struct nfsd_createargs {
  44.     struct svc_fh        fh;
  45.     char *            name;
  46.     unsigned int        len;
  47.     struct iattr        attrs;
  48. };
  49.  
  50. struct nfsd_renameargs {
  51.     struct svc_fh        ffh;
  52.     char *            fname;
  53.     unsigned int        flen;
  54.     struct svc_fh        tfh;
  55.     char *            tname;
  56.     unsigned int        tlen;
  57. };
  58.  
  59. struct nfsd_readlinkargs {
  60.     struct svc_fh        fh;
  61.     char *            buffer;
  62. };
  63.     
  64. struct nfsd_linkargs {
  65.     struct svc_fh        ffh;
  66.     struct svc_fh        tfh;
  67.     char *            tname;
  68.     unsigned int        tlen;
  69. };
  70.  
  71. struct nfsd_symlinkargs {
  72.     struct svc_fh        ffh;
  73.     char *            fname;
  74.     unsigned int        flen;
  75.     char *            tname;
  76.     unsigned int        tlen;
  77.     struct iattr        attrs;
  78. };
  79.  
  80. struct nfsd_readdirargs {
  81.     struct svc_fh        fh;
  82.     __u32            cookie;
  83.     __u32            count;
  84.     __be32 *        buffer;
  85. };
  86.  
  87. struct nfsd_attrstat {
  88.     struct svc_fh        fh;
  89.     struct kstat        stat;
  90. };
  91.  
  92. struct nfsd_diropres  {
  93.     struct svc_fh        fh;
  94.     struct kstat        stat;
  95. };
  96.  
  97. struct nfsd_readlinkres {
  98.     int            len;
  99. };
  100.  
  101. struct nfsd_readres {
  102.     struct svc_fh        fh;
  103.     unsigned long        count;
  104.     struct kstat        stat;
  105. };
  106.  
  107. struct nfsd_readdirres {
  108.     int            count;
  109.  
  110.     struct readdir_cd    common;
  111.     __be32 *        buffer;
  112.     int            buflen;
  113.     __be32 *        offset;
  114. };
  115.  
  116. struct nfsd_statfsres {
  117.     struct kstatfs        stats;
  118. };
  119.  
  120. /*
  121.  * Storage requirements for XDR arguments and results.
  122.  */
  123. union nfsd_xdrstore {
  124.     struct nfsd_sattrargs    sattr;
  125.     struct nfsd_diropargs    dirop;
  126.     struct nfsd_readargs    read;
  127.     struct nfsd_writeargs    write;
  128.     struct nfsd_createargs    create;
  129.     struct nfsd_renameargs    rename;
  130.     struct nfsd_linkargs    link;
  131.     struct nfsd_symlinkargs    symlink;
  132.     struct nfsd_readdirargs    readdir;
  133. };
  134.  
  135. #define NFS2_SVC_XDRSIZE    sizeof(union nfsd_xdrstore)
  136.  
  137.  
  138. int nfssvc_decode_void(struct svc_rqst *, __be32 *, void *);
  139. int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *);
  140. int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *,
  141.                 struct nfsd_sattrargs *);
  142. int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *,
  143.                 struct nfsd_diropargs *);
  144. int nfssvc_decode_readargs(struct svc_rqst *, __be32 *,
  145.                 struct nfsd_readargs *);
  146. int nfssvc_decode_writeargs(struct svc_rqst *, __be32 *,
  147.                 struct nfsd_writeargs *);
  148. int nfssvc_decode_createargs(struct svc_rqst *, __be32 *,
  149.                 struct nfsd_createargs *);
  150. int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *,
  151.                 struct nfsd_renameargs *);
  152. int nfssvc_decode_readlinkargs(struct svc_rqst *, __be32 *,
  153.                 struct nfsd_readlinkargs *);
  154. int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *,
  155.                 struct nfsd_linkargs *);
  156. int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *,
  157.                 struct nfsd_symlinkargs *);
  158. int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *,
  159.                 struct nfsd_readdirargs *);
  160. int nfssvc_encode_void(struct svc_rqst *, __be32 *, void *);
  161. int nfssvc_encode_attrstat(struct svc_rqst *, __be32 *, struct nfsd_attrstat *);
  162. int nfssvc_encode_diropres(struct svc_rqst *, __be32 *, struct nfsd_diropres *);
  163. int nfssvc_encode_readlinkres(struct svc_rqst *, __be32 *, struct nfsd_readlinkres *);
  164. int nfssvc_encode_readres(struct svc_rqst *, __be32 *, struct nfsd_readres *);
  165. int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *, struct nfsd_statfsres *);
  166. int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *, struct nfsd_readdirres *);
  167.  
  168. int nfssvc_encode_entry(void *, const char *name,
  169.             int namlen, loff_t offset, u64 ino, unsigned int);
  170.  
  171. int nfssvc_release_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *);
  172.  
  173. /* Helper functions for NFSv2 ACL code */
  174. __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp);
  175. __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp);
  176.  
  177. #endif /* LINUX_NFSD_H */
  178.